package cn.iocoder.yudao.module.forward.mqtt.message;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.io.Serializable;

@Data
public class EqrMessage implements Serializable {
    /**
     * 消息ID
     * 预警发布消息ID
     */
    @JSONField(name = "1")
    private String msgId;
    /**
     * 消息类型
     * 参考值：0101，0201，0301
     */
    @JSONField(name = "2")
    private String msgType;
    /**
     * 发送时间
     * 消息发送时间,格式：YYYY-MM-DD hh:mm:ss.SSS（24小时，年-月-日 时:分：秒.毫秒）
     */
    @JSONField(name = "3")
    private String sendTime;
    /**
     * 来源
     * 发布单元ID
     */
    @JSONField(name = "4")
    private String msgSource;
    /**
     * 校验码
     * 用于消息体完整性、正确性校验//后期如需要可加载数字签名
     */
    @JSONField(name = "5")
    private String checkCode;
    /**
     * 版本号
     * 预警发布协议版本号
     */
    @JSONField(name = "6")
    private String version;
    /**
     * 事件标识
     * 地震事件Id
     */
    @JSONField(name = "7")
    private String eewId;
    /**
     * 序列号
     * 地震预警事件的发布报文序号，其中：
     * 1为首报报文
     * 255为终报
     */
    @JSONField(name = "8")
    private String serialNumber;
    /**
     * 生产者
     * 生产单元Id，AAAAnn
     */
    @JSONField(name = "9")
    private String producer;
    /**
     * 接收者
     * 当消息类型为0201或0301时，为接收终端信息。 当消息类型为其他时，此项为空。格式：
     *  “GRO:GGGnn”： GGGnn为分组groupId，分组策略由发布单元或注册中心管理；
     * “UID:AAAAnn”:AAAAnn为接收终端ID
     */
    @JSONField(name = "10")
    private String receiver;
    /**
     * 震中预警等级
     * 包括：red（红色预警）、orange（橙色预警）、yellow（黄色预警）、blue（蓝色预警）
     */
    @JSONField(name = "11")
    private String warnningLevel;
    /**
     * 发震时间
     * 地震发生时间，格式：YYYY-MM-DD hh:mm:ss.SSS（24小时，年-月-日 时:分：秒.毫秒）
     */
    @JSONField(name = "12")
    private String oriTime;
    /**
     * 震中参考地名
     * Xx省xx市xx县，县级地名
     */
    @JSONField(name = "13")
    private String locName;
    /**
     * 震中经度
     * 精度：小数点后三位，单位：度
     */
    @JSONField(name = "14")
    private String epiLon;
    /**
     * 震中纬度
     * 精度：小数点后三位，单位：度
     */
    @JSONField(name = "15")
    private String epiLat;
    /**
     * 深度
     * 整数，单位：km
     */
    @JSONField(name = "16")
    private String focDepth;
    /**
     * 震级
     * 精度：一位小数
     */
    @JSONField(name = "17")
    private String magnitude;
}

